package modelo.servicio;

import java.util.List;
import modelo.bd.dao.AnexoDAO;
import modelo.bd.excepcion.DAOException;
import modelo.dominio.Anexo;

public class Anexos {
    private static Anexos instancia;
    private AnexoDAO dao;

    private Anexos() {
        this.dao = new AnexoDAO();
    }

    public static Anexos instancia() {
        if (instancia == null) {
            instancia = new Anexos();
        }
        return instancia;
    }

    @Override
    protected Object clone() throws CloneNotSupportedException {
        return new CloneNotSupportedException("No se puede clonar Anexos.");
    }
    
    public void agregar(String claveFlujo, long folio, String idProveedor, 
            long idFactura, String nombreDocumento, 
            String ruta, String usuario) throws DAOException {
        Anexo anexo = new Anexo(nombreDocumento.replace("'", "''"), ruta);
        anexo.setFactura(Facturas.instancia().porClave(claveFlujo, idFactura, idProveedor));
        dao.add(anexo, usuario);
    }

    public void editar(String claveFlujo, long folio, String idProveedor, 
            long idFactura, long identificador, String nombreDocumento, 
            String ruta, String usuario) throws DAOException {
//        Anexo anexo = new Anexo(identificador, nombreDocumento.replace("'", "''"), ruta);
//        anexo.setFactura(Facturas.instancia().porClave(claveFlujo, idFactura, idProveedor));
//        dao.update(anexo, usuario);
    }

    public void eliminar(String idProveedor, long idFactura, long identificador)
            throws DAOException {
    }

    public List<Anexo> todos() throws DAOException {
        return dao.selectAll();
    }
    
    public List<Anexo> deFactura (long idProveedor, long idFactura) throws DAOException {
     return dao.selectWhere("anfp_prpo_numero = '"+idProveedor+"' \n"
                + "AND    anfp_fapr_numero = " + idFactura);
    
    }
    
    public Anexo porClave(String idProveedor, long idFactura, long identificador) throws DAOException {
        try {
            List<Anexo> ls = dao.selectWhere("anfp_prpo_numero = '"+idProveedor+"' \n"
                                        + "AND    anfp_fapr_numero = " + idFactura
                                        + " AND    anfp_numero      = " + identificador);
            return ls.get(0);
        } catch (Exception e) {
            return null;
        }
    }
}
